<?php
//验证码

//封装一个生成验证码字符的方法
function GetCode($length = 4)
{
    //随机字符
    $str = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    //打乱字符串
    $str = str_shuffle($str);

    //从第0位 开始截取 截取 $length
    return substr($str, 0, $length);
}

//设置验证码图片宽和高
$width = 80;
$height = 30;

//创建一张彩色图片  返回图片对象
$img = imagecreatetruecolor($width, $height);

//背景有颜色，文字也有颜色

//rgb 0 ~ 255
$bgred = mt_rand(0, 255); //随机整数
$bggreen = mt_rand(0, 255); //随机整数
$bgblue = mt_rand(0, 255); //随机整数

//新建一个背景颜色
$bgcolor = imagecolorallocate($img, $bgred, $bggreen, $bgblue);

//新建一个文字颜色
$textred = mt_rand(0, 255); //随机整数
$textgreen = mt_rand(0, 255); //随机整数
$textblue = mt_rand(0, 255); //随机整数
$textcolor = imagecolorallocate($img, $textred, $textgreen, $textblue);

//填充背景色 填充矩形
imagefilledrectangle($img, 0, 0, $width, $height, $bgcolor);

//生成随机验证码
$str = GetCode();

//将字符串水平的写到一个图片上去
// imagestring($img, 5, 22, 8, $str, $textcolor);
$ttf = 'D:\phpstudy_pro\WWW\company\assets\fonts\OpenSans-Bold.ttf';
imagettftext($img, 16, 0, 13, 22, $textcolor, $ttf, $str);

//在图片上画一些点 防止别人刷验证码
for ($i = 1; $i <= 100; $i++) {
    $red = mt_rand(0, 255); //随机整数
    $green = mt_rand(0, 255); //随机整数
    $blue = mt_rand(0, 255); //随机整数

    $pxcolor = imagecolorallocate($img, $red, $green, $blue);

    $x = mt_rand(0, $width);
    $y = mt_rand(0, $height);

    //准备打点  在图片上设置一个  单位1像素的一个点
    imagesetpixel($img, $x, $y, $pxcolor);
}

//声明头信息了  图片头信息
// header("Content-Type:text/html;charset=utf-8");
header("Content-Type:image/png");

//图片输出
imagepng($img);

//图片已输出的话，对象就不需要，就把对象释放了内存
imagedestroy($img);

//将生成的验证码 放到  session 里面

//开启会话
session_start();

//存变量进去
$_SESSION['vercode'] = $str;



?>
